package com.eltsistemas.dao;

import com.eltsistema.hibernate.HibernateUtil;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.eltsistemas.modelo.Fabricante;

public class FabricanteDao {
	
	private Session session;
	
	public FabricanteDao()
	{
            session = new HibernateUtil().getSession();
            session.beginTransaction();
	}
	
	public void adiciona(Fabricante fabricante)
	{
            session.save(fabricante);
            session.getTransaction().commit();
            session.close();
	}
	
	public List<Fabricante> lista()
	{
            List<Fabricante> fabricanteList = session.createCriteria(Fabricante.class).list();
            session.close();
            return fabricanteList;
	}
	
	public Fabricante exibe(Fabricante fabricante)
	{
            Fabricante encontradoFabricante = (Fabricante) session.load(Fabricante.class, fabricante.getId());
            return encontradoFabricante;
	}
	
	public void altera(Fabricante fabricante)
	{
            session.update(fabricante);
            session.getTransaction().commit();
            session.close();
        }
	
	public void remover(Fabricante fabricante)
	{
            session.delete(fabricante);
            session.getTransaction().commit();
            session.close();
	}

	public Fabricante buscaCodigo(String nome)
        {
            Query query = this.session.createQuery("from Fabricante " +
            			"where nome = :nome");
            query.setString("nome", nome);
				
            Fabricante encontradoFabricante = (Fabricante) query.uniqueResult();
            session.close();
            return encontradoFabricante;	
	}
}
